package com.ruoyi.tsjData.service.impl;

import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.Future;

import com.ruoyi.common.utils.DateUtils;
import com.ruoyi.common.utils.calculate.BezierCurveUtil;
import com.ruoyi.tsjData.domain.plat.DataTshjYy;
import com.ruoyi.tsjData.mapper.DataTshjYyMapper;
import com.ruoyi.tsjData.service.IDataTshjYyService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Async;
import org.springframework.scheduling.annotation.AsyncResult;
import org.springframework.stereotype.Service;


/**
 * 提升机-油压测试Service业务层处理
 * 
 * @author ruoyi
 * @date 2023-10-25
 */
@Service
public class DataTshjYyServiceImpl implements IDataTshjYyService
{
    @Autowired(required = false)
    private DataTshjYyMapper dataTshjYyMapper;

    /**
     * 查询提升机-油压测试
     * 
     * @param yyId 提升机-油压测试主键
     * @return 提升机-油压测试
     */
    @Override
    public DataTshjYy selectDataTshjYyByYyId(Long yyId)
    {
        return dataTshjYyMapper.selectDataTshjYyByYyId(yyId);
    }

    /**
     * 油压测试数据
     * @param dataTaskId
     * @return
     */
    @Async("threadPoolKy")
    @Override
    public Future<List<DataTshjYy>> selectYy(Long dataTaskId) {
        List<DataTshjYy> dataTshjYyeEntities = new ArrayList<>();
        dataTshjYyeEntities = dataTshjYyMapper.selectDataTshjYyByDataTaskId(dataTaskId);
        if (dataTshjYyeEntities.size() != 0) {
            dataTshjYyeEntities.forEach(item -> {
                item.setYy1ChartLineDTO(BezierCurveUtil.calPoints(item.getYyList1(), 0.2f, true));
                item.setYy2ChartLineDTO(BezierCurveUtil.calPoints(item.getYyList2(), 0.2f, true));
            });
        }
        return new AsyncResult<>(dataTshjYyeEntities);
    }


    /**
     * 查询提升机-油压测试
     *
     * @param dataTaskId 提升机-油压测试任务id
     * @return 提升机-油压测试
     */
    @Override
    public List<DataTshjYy> selectDataTshjYyByDataTaskId(Long dataTaskId) {
        return dataTshjYyMapper.selectDataTshjYyByDataTaskId(dataTaskId);
    }

    /**
     * 查询提升机-油压测试列表
     * 
     * @param dataTshjYy 提升机-油压测试
     * @return 提升机-油压测试
     */
    @Override
    public List<DataTshjYy> selectDataTshjYyList(DataTshjYy dataTshjYy)
    {
        return dataTshjYyMapper.selectDataTshjYyList(dataTshjYy);
    }

    /**
     * 新增提升机-油压测试
     * 
     * @param dataTshjYy 提升机-油压测试
     * @return 结果
     */
    @Override
    public int insertDataTshjYy(DataTshjYy dataTshjYy)
    {
        dataTshjYy.setCreateTime(DateUtils.getNowDate());
        return dataTshjYyMapper.insertDataTshjYy(dataTshjYy);
    }

    /**
     * 批量新增油压数据
     * @param dataTshjYys 提升机-油压测试
     * @return
     */
    @Override
    public int batchDataTshjYy(List<DataTshjYy> dataTshjYys) {
        return dataTshjYyMapper.batchDataTshjYy(dataTshjYys);
    }

    /**
     * 修改提升机-油压测试
     * 
     * @param dataTshjYy 提升机-油压测试
     * @return 结果
     */
    @Override
    public int updateDataTshjYy(DataTshjYy dataTshjYy)
    {
        dataTshjYy.setUpdateTime(DateUtils.getNowDate());
        return dataTshjYyMapper.updateDataTshjYy(dataTshjYy);
    }

    /**
     * 批量修改油压测试数据
     * @param dataTshjYys 提升机-油压测试
     * @return
     */
    @Override
    public int updateBatchDataTshjYy(List<DataTshjYy> dataTshjYys) {
        return dataTshjYyMapper.batchDataTshjYy(dataTshjYys);
    }

    /**
     * 变更油压测试任务状态
     * @param dataTaskIds 提升机-油压测试主键
     * @return
     */
    @Override
    public int updateDataTshjYyByDataTaskIds(Long[] dataTaskIds) {
        return dataTshjYyMapper.updateDataTshjYyByDataTaskIds(dataTaskIds);
    }

    /**
     * 变更油压测试状态为2
     * @param dataTaskId
     * @param yyId
     * @return
     */
    @Override
    public int updateDataTshjYyByYyId(Long dataTaskId, Long yyId) {
        return dataTshjYyMapper.updateDataTshjYyByYyId(dataTaskId, yyId);
    }

    /**
     * 批量删除提升机-油压测试
     * 
     * @param yyIds 需要删除的提升机-油压测试主键
     * @return 结果
     */
    @Override
    public int deleteDataTshjYyByYyIds(Long[] yyIds)
    {
        return dataTshjYyMapper.deleteDataTshjYyByYyIds(yyIds);
    }

    /**
     * 删除提升机-油压测试信息
     * 
     * @param yyId 提升机-油压测试主键
     * @return 结果
     */
    @Override
    public int deleteDataTshjYyByYyId(Long yyId)
    {
        return dataTshjYyMapper.deleteDataTshjYyByYyId(yyId);
    }
}
